/*     */ package com.zimbra.cs.filter.jsieve;
/*     */ 
/*     */ import com.google.common.collect.ImmutableSet;
/*     */ import com.google.common.collect.ImmutableSet.Builder;
/*     */ import com.zimbra.cs.filter.FilterUtil;
/*     */ import com.zimbra.cs.filter.ZimbraMailAdapter;
/*     */ import com.zimbra.cs.mailbox.Message;
/*     */ import java.util.Iterator;
/*     */ import java.util.List;
/*     */ import java.util.Set;
/*     */ import org.apache.jsieve.Argument;
/*     */ import org.apache.jsieve.Arguments;
/*     */ import org.apache.jsieve.ScriptCoordinate;
/*     */ import org.apache.jsieve.SieveContext;
/*     */ import org.apache.jsieve.StringListArgument;
/*     */ import org.apache.jsieve.exception.SieveException;
/*     */ import org.apache.jsieve.mail.Action;
/*     */ import org.apache.jsieve.mail.MailAdapter;
/*     */ import org.apache.jsieve.tests.AbstractTest;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public final class FlaggedTest
/*     */   extends AbstractTest
/*     */ {
/*     */   private Set<ActionFlag> flags;
/*     */   
/*     */   protected void validateArguments(Arguments args, SieveContext ctx)
/*     */     throws SieveException
/*     */   {
/*  58 */     Iterator<Argument> itr = args.getArgumentList().iterator();
/*  59 */     if (itr.hasNext()) {
/*  60 */       Argument arg = (Argument)itr.next();
/*  61 */       if ((arg instanceof StringListArgument)) {
/*  62 */         ImmutableSet.Builder<ActionFlag> builder = ImmutableSet.builder();
/*  63 */         for (String name : ((StringListArgument)arg).getList()) {
/*  64 */           ActionFlag flag = ActionFlag.of(name);
/*  65 */           if (flag != null) {
/*  66 */             builder.add(flag);
/*     */           } else {
/*  68 */             throw ctx.getCoordinate().syntaxException("Invalid flag: " + name);
/*     */           }
/*     */         }
/*  71 */         this.flags = builder.build();
/*     */       } else {
/*  73 */         throw ctx.getCoordinate().syntaxException("Unexpected argument: " + arg.getValue());
/*     */       }
/*     */     } else {
/*  76 */       throw ctx.getCoordinate().syntaxException("No flag names specified");
/*     */     }
/*     */   }
/*     */   
/*     */   protected boolean executeBasic(MailAdapter mail, Arguments args, SieveContext ctx) throws SieveException
/*     */   {
/*  82 */     assert (this.flags != null);
/*  83 */     if (!(mail instanceof ZimbraMailAdapter)) {
/*  84 */       return false;
/*     */     }
/*  86 */     ZimbraMailAdapter adapter = (ZimbraMailAdapter)mail;
/*     */     
/*     */ 
/*  89 */     for (Action action : adapter.getActions()) {
/*  90 */       if (((action instanceof ActionFlag)) && 
/*  91 */         (this.flags.contains(action))) {
/*  92 */         return true;
/*     */       }
/*     */     }
/*     */     
/*     */ 
/*     */ 
/*  98 */     Message msg = adapter.getMessage();
/*  99 */     if (msg != null) {
/* 100 */       int bitmask = msg.getFlagBitmask();
/* 101 */       return bitmask == FilterUtil.getFlagBitmask(this.flags, bitmask);
/*     */     }
/*     */     
/* 104 */     return false;
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/filter/jsieve/FlaggedTest.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */